#pragma once
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

typedef int SListDatatype;

typedef struct ListNode
{
	SListDatatype data;
	struct ListNode* next;
}ListNode;

ListNode* BuyNewNode(SListDatatype x);

void print(ListNode* phead);


void SListPushBack(ListNode** pphead, SListDatatype x);
void SListPushFront(ListNode** pphead, SListDatatype x);

void SListPopBack(ListNode** pphead);
void SListPopFront(ListNode** pphead);

ListNode* SListFind(ListNode** pphead, SListDatatype x);

void SListInsertAfter(ListNode* pos, SListDatatype x);

void SListEraseAfter(ListNode**pphead, ListNode* pos);

void SListDestroy(ListNode** pphead);
